/*
*   Grupo 2:		Ana Elisa Siena			7126563
*                       Larissa Zimmermann		7126879
* 
*   Jogo em Java - AngryBirds
*   SCC - 604 - Programação Orientada a Objetos
*   Prof. Fernando V. Paulovich
*   Engenharia de Computação 010 - USP - São Carlos
*   Segundo Semestre de 2011 
*	
*/

package angrybirds.menus;

import angrybirds.main.Angrybirds;
import org.newdawn.slick.GameContainer;
import org.newdawn.slick.Graphics;
import org.newdawn.slick.Image;
import org.newdawn.slick.Input;
import org.newdawn.slick.SlickException;
import org.newdawn.slick.Sound;
import org.newdawn.slick.state.BasicGameState;
import org.newdawn.slick.state.StateBasedGame;

/*******************************************************************************
 *	Nome da classe:     MenuFases
 *	O que faz:          Escolhe qual será a fase          		
 *******************************************************************************/
public class MenuFases extends BasicGameState {

    private int stateID = -1;

    private Image background = null;
    private Image fase1 = null;
    private Image fase2 = null;
    private Image fase3 = null;
    private Image fase4 = null;
    private Image fase5 = null;
    private Image menu = null;
   
    private float voltarMenuEscala = 1;
    private float fase_escala1 = 1;
    private float fase_escala2 = 1;
    private float fase_escala3 = 1;
    private float fase_escala4 = 1;
    private float fase_escala5 = 1;
      
    private Sound musicaOpcao = null;
    
    private static final float botX = 260;
    private static final float botY = 40;
    
    boolean insideBackmenu = false;
    boolean insideFase1 = false;
    boolean insideFase2 = false;
    boolean insideFase3 = false;
    boolean insideFase4 = false;
    boolean insideFase5 = false;


    public MenuFases(int CHOOSEGAMEPLAYSTATE) {
        this.stateID = CHOOSEGAMEPLAYSTATE;
    }

    @Override
    public int getID() {
        return this.stateID;
    }

    @Override
    public void init(GameContainer gc, StateBasedGame sbg) throws SlickException {
        this.background = new Image("imagensJogo/Fundo2.jpg");
        
        this.menu = new Image("imagensJogo/Botao_Voltar_Menu.png");
        
        this.fase1 = new Image("imagensJogo/Botao_fase1.png");
        this.fase2 = new Image("imagensJogo/Botao_fase2.png");
        this.fase3 = new Image("imagensJogo/Botao_fase3.png");
        this.fase4 = new Image("imagensJogo/Botao_fase4.png");
        this.fase5 = new Image("imagensJogo/Botao_fase5.png"); 

        musicaOpcao = new Sound("sons/SelecaoBotoes.wav");        
    }

    @Override
    public void render(GameContainer gc, StateBasedGame sbg, Graphics grphcs) throws SlickException {

        this.background.draw(0, 0);
        
        this.menu.draw(0, 0, voltarMenuEscala);
        
        this.fase1.draw(botX, botY, this.fase_escala1);
        this.fase2.draw(botX, botY + 100, this.fase_escala2);
        this.fase3.draw(botX, botY + 200, this.fase_escala3);
        this.fase4.draw(botX, botY + 300, this.fase_escala4);
        this.fase5.draw(botX, botY + 400, this.fase_escala5);
      
    }
    private float escala = 0.001f;

    @Override
    public void update(GameContainer gc, StateBasedGame sb, int delta) throws SlickException {
        Input input = gc.getInput();

        int mouseX = input.getMouseX();
        int mouseY = input.getMouseY();

        //MENU, FASE 1, FASE 2, FASE 3 , FASE 4, FASE 5
        if ((mouseX >= 0 && mouseX <= (this.menu.getWidth()))
                && (mouseY >= 0 && mouseY <= this.menu.getHeight())) {
            insideBackmenu = true;
        }
        else insideBackmenu = false;
        
        if ((mouseX >= this.botX && mouseX <= (this.botX + this.fase1.getWidth()))
                && (mouseY >= this.botY && mouseY <= (this.botY + this.fase1.getHeight()))) {
            insideFase1 = true;
        }
        else insideFase1 = false; 
            
        if((mouseX >= this.botX && mouseY <= (this.botX + this.fase2.getWidth())) 
                && (mouseY >= (this.botY + 100) && mouseY <= (this.botY + 100 + this.fase2.getHeight()))){
            insideFase2 = true;
        } 
        else insideFase2 = false; 
            
        if((mouseX >= this.botX && mouseY <= (this.botX + this.fase3.getWidth()))
                && (mouseY >= (this.botY + 200) && mouseY <= (this.botY + 200 + this.fase3.getHeight()))){
            insideFase3 = true;
        } 
        else insideFase3 = false;
        
        if((mouseX >= this.botX && mouseY <= (this.botX + this.fase4.getWidth()))
                && (mouseY >= (this.botY + 300) && mouseY <= (this.botY + 300 + this.fase4.getHeight()))){
            insideFase4 = true;
        }
        else insideFase4 = false;
        
        if((mouseX >= this.botX && mouseY <= (this.botX + this.fase5.getWidth()))
                && (mouseY >= (this.botY + 400) && mouseY <= (this.botY + 400 + this.fase5.getHeight()))){
            insideFase5 = true;
        }
        else insideFase5 = false;
  
        if (insideBackmenu) {
            if (this.voltarMenuEscala < 1.05f) {
                this.voltarMenuEscala += this.escala * delta;
                musicaOpcao.play();
            }
            //se o click for realizado...
            if (input.isMousePressed(Input.MOUSE_LEFT_BUTTON)) {
                sb.enterState(Angrybirds.MAINMENUSTATE);
            }
        } else {
            if (this.voltarMenuEscala > 1.0f) {
                this.voltarMenuEscala -= this.escala * delta;
            }
        }
        
        if (insideFase1) {
            if (this.fase_escala1 < 1.05f) {
                
                this.fase_escala1 += this.escala * delta;
                musicaOpcao.play();
            }
            if (input.isMousePressed(Input.MOUSE_LEFT_BUTTON)) {
                sb.enterState(Angrybirds.FASE1);                
            }
        } else {
            if (this.fase_escala1 > 1.0f) {
                this.fase_escala1 -= this.escala * delta;
            }
        }
        
        if (insideFase2) {
            if (this.fase_escala2 < 1.05f) {
                this.fase_escala2 += this.escala * delta;
                musicaOpcao.play();
            }
            if (input.isMousePressed(Input.MOUSE_LEFT_BUTTON)) {
                sb.enterState(Angrybirds.FASE2);
            }
        } else {
            if (this.fase_escala2 > 1.0f) {
                this.fase_escala2 -= this.escala * delta;
            }
        }
            
        if (insideFase3) {
            if (this.fase_escala3 < 1.05f) {
                this.fase_escala3 += this.escala * delta;
                musicaOpcao.play();
            }
            //se o click for realizado...
            if (input.isMousePressed(Input.MOUSE_LEFT_BUTTON)) {
                sb.enterState(Angrybirds.FASE3);
            }
        } else {
            if (this.fase_escala3 > 1.0f) {
                this.fase_escala3 -= this.escala * delta;
            }
        }
        
        if (insideFase4) {
            if (this.fase_escala4 < 1.05f) {
                this.fase_escala4 += this.escala * delta;
                musicaOpcao.play();
            }
            //se o click for realizado...
            if (input.isMousePressed(Input.MOUSE_LEFT_BUTTON)) {
                sb.enterState(Angrybirds.FASE4);
            }
        } else {
            if (this.fase_escala4 > 1.0f) {
                this.fase_escala4 -= this.escala * delta;
            }
        }
        
        if (insideFase5) {
            if (this.fase_escala5 < 1.05f) {
                this.fase_escala5 += this.escala * delta;
                musicaOpcao.play();
            }
            //se o click for realizado...
            if (input.isMousePressed(Input.MOUSE_LEFT_BUTTON)) {
                sb.enterState(Angrybirds.FASE5);
            }
        } else {
            if (this.fase_escala5 > 1.0f) {
                this.fase_escala5 -= this.escala * delta;
            }
        }
    }
}

